Vignetting Analysis

Given a system or ray bundle and a set of apertures this package provides a basic tool for evaluating vignetting criteria at each aperture. Along with identifying, by index, which apertures cause partial or full vignetting, the returned Vignetting data structure holds a 5 column semi-diameter matrix in its M field which contains:

  • The provided aperture size;
  • The marginal ray limit: the size at which the aperture becomes the stop due to limiting the on-axis ray bundle;
  • The size necessary for no vignetting to occur;
  • The size at which the half-vignetting condition is satisified;
  • The size at which the aperture clips the entire off-axis ray bundle; this is the minimum aperture size at which the given field of view is still supported down to approximately zero irradiance.

In addition, the maximum system field of view for the unvignetted, half-vignetted, and fully-vignetted cases is determined for the input aperture sizes.

Querying the FOV field extracts the maximum supported full fields of view in degrees, paraxial principal ray slopes, and the corresponding image heights for all three vignetting conditions as a matrix with the rows corresponding to the conditions and the columns to the fields, slopes, and heights, respectively.

In essence, the M matrix represents the supported aperture sizes for each case given the system field of view and the FOV matrix corresponds to the maximal fields for the given aperture sizes.

Any NaNs in the M matrix signify that there is no possible size which fits the criteria due to the aforementioned limiting factor.

julia> vig = vignetting(system)Partially vignetted:
[1, 2, 3, 7, 8]

Maximum supported FOVs:
Unvignetted: 6.0997°, h′: 2.7060
Half-vignetted: 93.5337°, h′: 54.0216
Fully-vignetted: 128.5177°, h′: 105.3371

a       limit    un       half     full
8×5 Matrix{Float64}:
 9.5   9.02413  12.805    NaN  NaN
 9.5   8.27315  10.8017   NaN  NaN
 9.0   7.59772   9.0471   NaN  NaN
 9.0   7.48453   8.65861  NaN  NaN
 7.63  7.63      7.63     NaN  NaN
 8.5   7.68614   8.13925  NaN  NaN
 8.5   7.77516   8.94668  NaN  NaN
 8.5   7.82878  10.2157   NaN  NaN
julia> # FOVs, slopes, heights
       vig.FOV3×3 Matrix{Float64}:
   6.09972  0.0532804    2.70603
  93.5337   1.06366     54.0216
 128.518    2.07403    105.337

There is also support for analyzing a traced RayBasis.